home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 5
/
Aminet 5 - March 1995.iso
/
Aminet
/
gfx
/
show
/
jpegAGAsrc21.lha
/
jpegAGAsrc
/
jpegAGA
/
fromWB.c
< prev
next >
Wrap
C/C++ Source or Header
|
1995-01-14
|
4KB
|
181 lines
/* Start from Workbench */
#include <workbench/startup.h>
#include <workbench/workbench.h>
#ifndef __GNUC__
#include <pragmas/dos_pragmas.h>
#include <pragmas/icon_pragmas.h>
#include <pragmas/exec_pragmas.h>
#include <clib/dos_protos.h>
#include <clib/icon_protos.h>
#include <clib/exec_protos.h>
#else
#include <inline/dos.h>
#include <inline/icon.h>
#include <inline/exec.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAXFILES 500
#ifdef __GNUC__
#define MYSTRCMP strcasecmp
#define MYSTRNCMP strncasecmp
#else
#define MYSTRCMP strcmp
#define MYSTRNCMP strncmp
#endif
struct Library *IconBase = NULL;
extern struct WBArg *wb_arg;
extern int NumPictures;
extern BPTR olddir;
/* Flags */
extern short WBFiles;
struct WBFlags
{
int scale;
short VGAenable;
short SUPER72enable;
short SMRenable;
short GrayEnable;
short NoSmooth;
short DCTFast;
short ScaleFit;
};
extern struct WBFlags WBFlags;
extern struct WBFlags OldFlags;
void ParseToolTypes(struct WBArg *wbarg, int initial);
BPTR olddir;
void FillWB(struct WBStartup *argmsg)
{
LONG ktr;
/* open icon.library, will be closed by CloseDisplay() */
if(!IconBase)
{
if(!(IconBase = OpenLibrary((UBYTE *)"icon.library",33)))
{
printf("Could not open icon.library V33 or higher.\n");
return;
}
}
wb_arg = argmsg->sm_ArgList;
if(wb_arg->wa_Lock != 0)
{
olddir = CurrentDir(wb_arg->wa_Lock);
}
ParseToolTypes(wb_arg, 1);
if(olddir)
{
CurrentDir(olddir);
olddir=0;
}
if(argmsg->sm_NumArgs <= 1) return;
WBFiles=1;
NumPictures = argmsg->sm_NumArgs - 1;
/* printf("NumPictures: %d\n", NumPictures); */
wb_arg++;
}
void ParseToolTypes(struct WBArg *wbarg, int initial)
{
struct DiskObject *dobj;
UBYTE **toolarray;
char *s;
/* initialize OldFlags even if tool type processing fails */
if(initial) memcpy(&OldFlags, &WBFlags, sizeof(struct WBFlags));
if(!IconBase)
{
if(!(IconBase = OpenLibrary((UBYTE *)"icon.library",33)))
{
printf("Could not open icon.library V33 or higher.\n");
return;
}
}
if(wbarg)
if((*wbarg->wa_Name) && (dobj=GetDiskObject(wbarg->wa_Name)))
{
toolarray = (UBYTE **)dobj->do_ToolTypes;
if(s=(char *)FindToolType(toolarray, "ARGS"))
{
int i=0;
#ifndef __GNUC__
strupr(s);
#endif
while(1)
{
while(s[i] != 0 && s[i] != '-') i++;
if(s[i] == '-')
{
/* printf("Argument found.\n"); */
if(!MYSTRNCMP(&s[i], "-GRAY", 5)) WBFlags.GrayEnable=1;
else if(!MYSTRNCMP(&s[i], "-VGA", 4)) WBFlags.VGAenable=1;
else if(!MYSTRNCMP(&s[i], "-SUPER72", 8)) WBFlags.SUPER72enable=1;
else if(!MYSTRNCMP(&s[i], "-NOSMOOTH", 9)) WBFlags.NoSmooth=1;
else if(!MYSTRNCMP(&s[i], "-FIT", 4)) WBFlags.ScaleFit=1;
else if(!MYSTRNCMP(&s[i], "-DCT FAST", 9)) WBFlags.DCTFast=1;
else if(!MYSTRNCMP(&s[i], "-DCT INT", 8)) WBFlags.DCTFast=0;
else if(!MYSTRNCMP(&s[i], "-SCALE 1/1", 10)) WBFlags.scale=1;
else if(!MYSTRNCMP(&s[i], "-SCALE 1/2", 10)) WBFlags.scale=2;
else if(!MYSTRNCMP(&s[i], "-SCALE 1/4", 10)) WBFlags.scale=4;
else if(!MYSTRNCMP(&s[i], "-SCALE 1/8", 10)) WBFlags.scale=8;
else if(!MYSTRNCMP(&s[i], "-SMR", 4) && initial) WBFlags.SMRenable=1;
else if(!MYSTRNCMP(&s[i], "-NOGRAY", 7) && !initial) WBFlags.GrayEnable=0;
else if(!MYSTRNCMP(&s[i], "-NOVGA", 6) && !initial) WBFlags.VGAenable=0;
else if(!MYSTRNCMP(&s[i], "-NOSUPER72", 10) && !initial) WBFlags.SUPER72enable=0;
else if(!MYSTRNCMP(&s[i], "-SMOOTH", 7) && !initial) WBFlags.NoSmooth=0;
else if(!MYSTRNCMP(&s[i], "-NOFIT", 6) && !initial) WBFlags.ScaleFit=0;
i++;
}
else break;
}
if(initial) memcpy(&OldFlags, &WBFlags, sizeof(struct WBFlags));
}
FreeDiskObject(dobj);
}
}